// basic
const bar: unknown = <never>undefined;

// 除了对象类型 (object 类族) 之外 __(?)
// 都符合 更具体的类型 (never) 是更抽象的类型 (unknown) 的子类  [协变规则]
const bar1: number = <1>1;
const barb: boolean = <true>true;
// 字符串
const bars: string = <'foo2'>'foo';
/// 问：为什么 {} 感觉是最具体的，但是在类型层面确实最抽象的呢？
// 也许是 {} 分担了 object 的一些职能
let a: {} = <{ name: string }>{};
let b: object = <{ name: string }>{};

type _readonly = ReadonlyArray<number> extends number[] ? 1 : 0;
//       ^?
type _readonly2 = number[] extends readonly number[] ? 1 : 0;
//        ^?

type NORM = never extends unknown ? 1 : 0;
//      ^?
// number[] < readonly number[]

void (function func3() {
  return undefined;
})();
